package awk.etl.dataset;

import awk.etl.model.DataSetBean;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Random;

/**
 * 数据集执行引擎
 */
public class DataSetExecute {

    /**
     * 执行数据集查询
     * 数据集查询都是列表，如果是对象，则封装为列表
     * @param dataSetId
     * @return
     */
    public static List<Map<String,Object>> getDataSet(String dataSetId,Map<String,Object> args ) {
        //TODO 数据集详细配置需要查数据库
        DataSetBean dataSetBean = DataSetExecuteMock.dataSet(dataSetId);
        String dsl = dataSetBean.getScripts();
        //todo dsl 中的参数替换。
        Map<String, Object> params = dataSetBean.getParams();
        for (String key : params.keySet()) {
            String placeholder = "#{" + key + "}";
            dsl.replace(placeholder, args.get(key).toString());
        }
        //直接返回mock的数据
        if (dataSetBean.getMocked()){
            return (List<Map<String,Object>>)dataSetBean.getMockedData();
        }
        return DataSetExecuteMock.datas[new Random().nextInt(5)];
    }
}
